package reflect;

import java.lang.reflect.Method;

/**
 * 反射机制调用有参方法;
 */
public class Demo06Reflect {
    public static void main(String[] args) throws Exception{
        //需求:调用say方法;
        //1.以前写法
        Person p = new Person();
        p.say("七月七日长生殿");

        //2.反射写法
        /*
            1.获取类对象;
            2.实例化;
            3.获取方法对象;
            4.调用方法[传参];
         */
        Class cls = Class.forName("reflect.Person");
        Object obj = cls.newInstance();
        //第1个参数是方法名称,后续所有的参数都是方法参数类型;
        Method method = cls.getMethod("say", String.class);
        //第1个参数是实例化的对象,后续所有的参数都是传入的值;
        method.invoke(obj, "夜半无人私语时");

        //练习:调用say(String info, int count)方法;
        Method method1 = cls.getMethod("say", String.class, int.class);
        method1.invoke(obj, "在天愿作比翼鸟", 5);
    }
}










